High-speed data communication nodes such as routers and switches communicate with each other by transmitting and receiving data packets via communication protocols such as HTTP, TCP/IP, SMB, and the like. When a node receives a data packet, it performs address lookups to properly process the packet. In performing an address lookup, a key including information from the packet is compared against entries in a lookup table. If a match is found, the packet is processed in accordance with information associated with the matching entry.
One type of lookup is a source lookup where a source address is applied to the lookup table to identify the sender of the packet for billing and accounting, source/application policing, and source learning. A second type of lookup is destination lookup where a destination address key is applied to the lookup table to determine how and where to route the packet.
As the Internet continues to increase in size and complexity, the number of entries required to be stored in the lookup tables continue to explode. One way this explosive growth may be addressed is by introducing nodes with increasingly higher capacity databases. However, given the time delays associated with new product development and the unique requirements of each network, there is a need for a more flexible and scalable solution for supporting the expected number of entries in lookup tables.